<?php

namespace app\admin\controller;

use think\Controller;
use think\Request;
use app\admin\model\CateModel;
use app\admin\model\GoodsModel;

class CateController extends Controller
{
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
        //显示分类列表
        $data = CateModel::select();
        //调用无线分类函数组装数据
        $data = $this->getCates($data);
        if ($data) {
            return \sendResponse($data);
        }
        return \sendResponse([]);
    }
    
    /*
    * 封装无线分类方法
    */
    public function getCates($cates=[],$id=0)
    {
        if(empty($cates)){
            $cates = CateModel::select();
        }
        $arr = [];
        foreach ($cates as $key => $v) {
            if($v->pid == $id){
            $v->sub = self::getCates($cates,$v->id);
            $arr[] = $v;
            }
        }
        return $arr;
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
        //
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        //接收参数
        $params = $request->post();
        //判断分类名是否为空
        if (empty($params['name'])) {
            return \sendResponse('', 1101);
        }
        //判断分类是否存在
        if (CateModel::where('name', $_POST['name'])->find()) {
            return \sendResponse('', 1102);
        }
        //执行添加
        $res = CateModel::create($params);
        if ($res) {
            return \sendResponse();
        }

        return \sendResponse('', -1);

    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {
        //
    }

    /**
     * 显示编辑资源表单页.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function edit($id)
    {
        //查询单条数据
        $data = CateModel::where('id', $id)->find();
        //判断
        if ($data) {
            return \sendResponse($data);
        }
        return \sendResponse([]);
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        //接收参数
        $name = $request->post('name');
        $id = $request->post('id');
        //判断分类名是否存在
        if (CateModel::where('name', $name)->where('id', '<>', $id)->find()) {
            return \sendResponse('', 1102);
        }
        //修改
        $res = CateModel::update(['name'=>$name], ['id'=>$id]);
        if ($res) {
            return \sendResponse();
        }
        return \sendResponse('', -1);
    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {
        //先判断分类下是否有子类
        if (CateModel::where('pid', $id)->find()) {
            return \sendResponse('', 1103);
        }
        //判断分类下是否有商品
        if (GoodsModel::where('cate_id', $id)->find()) {
            return \sendResponse('', 1104);
        }
        //删除分类
        $res = CateModel::destroy($id);
        if ($res) {
            return \sendResponse();
        }
        return \sendResponse('', -1);
        
    }
}
